package pattern15.company;


/**
 * 抽象的公司接口，包含管理子类需要的方法
 *
 * @author wdl
 */
public abstract class BaseCompany {
    protected String name;

    public BaseCompany(String name) {
        this.name = name;
    }

    /**
     * 添加子部门/公司
     *
     * @param company 部门/公司
     */
    public abstract void add(BaseCompany company);

    /**
     * 移除子部门/公司
     *
     * @param company 部门/公司
     */
    public abstract void remove(BaseCompany company);

    /**
     * 显示
     *
     * @param depth 深度
     */
    public abstract void display(int depth);

    /**
     * 需要履行的职责
     */
    public abstract void lineOfDuty();
}
